package com.stefanini.pe.bbva.bp.in.dao.impl;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import org.springframework.stereotype.Repository;

import com.ibatis.sqlmap.client.SqlMapClient;
import com.stefanini.pe.bbva.bp.in.dao.iface.AlertaDAOIface;
import com.stefanini.pe.bbva.bp.in.to.AlertaClienteAdicional;
import com.stefanini.pe.bbva.bp.in.to.AlertaClienteTipoProducto;
import com.stefanini.pe.bbva.bp.in.to.Alertas;

@Repository
public class AlertaDAOImpl extends SqlMapClientDaoSupport implements AlertaDAOIface{
	
	@Autowired
	public AlertaDAOImpl(SqlMapClient sqlMapClient) {
		super();
		super.setSqlMapClient(sqlMapClient);
	}
	public List<HashMap> listarEstadoAlertas(){
		HashMap parametros=new HashMap();
		getSqlMapClientTemplate().queryForList("BP_ALERTA_SqlMap.listarEstadoAlertas",parametros);
		return (List)parametros.get("result");
	}
	
	public List<HashMap> listarAlertas(String in_idusuarioasesor, String in_codcliente, String in_fechadesde, 
			String in_fechahasta, String in_codestado, String in_idalerta, String in_idtipoalerta) throws Exception{
		HashMap map=new HashMap();
		map.put("in_idusuarioasesor", in_idusuarioasesor);
		map.put("in_codcliente", in_codcliente);
		map.put("in_fechadesde", in_fechadesde);
		map.put("in_fechahasta", in_fechahasta);
		map.put("in_codestado", in_codestado);
		map.put("in_idalerta", in_idalerta);		
		map.put("in_idtipoalerta", in_idtipoalerta);
		
		System.out.println("sp: IIAF.piiaf_asesoria.sp_cons_as_alerta, params: "+map);
		getSqlMapClientTemplate().queryForList("BP_ALERTA_SqlMap.listarAlertas",map);
		return (List)map.get("result");
	}
	
	public List<HashMap> listarCategorias() {		
		HashMap parametros=new HashMap();
		getSqlMapClientTemplate().queryForList("BP_ALERTA_SqlMap.listarCategorias",parametros);
		return (List)parametros.get("result");
	}
	
	public List<HashMap> listarContrato(String in_codcliente, String in_idcategoriaporproducto) {		
		HashMap map=new HashMap();
		map.put("in_codcliente", in_codcliente);
		map.put("in_idcategoriaporproducto", in_idcategoriaporproducto);				
		getSqlMapClientTemplate().queryForList("BP_ALERTA_SqlMap.listarContrato",map);
		return (List)map.get("result");
	}
	public List<HashMap> listarTipoAlarma(String in_idcategoriaporproducto) {		
		HashMap map=new HashMap();
		map.put("in_idcategoriaporproducto", in_idcategoriaporproducto);				
		getSqlMapClientTemplate().queryForList("BP_ALERTA_SqlMap.listarTipoAlarma",map);
		return (List)map.get("result");
	}

	public List<HashMap> listarTitulo(String in_codcontrato, String in_codcliente) {
		System.out.println(in_codcontrato+" - "+in_codcliente);
		HashMap map=new HashMap();
		map.put("in_codcontrato", in_codcontrato);
		map.put("in_codcliente", in_codcliente);		
		getSqlMapClientTemplate().queryForList("BP_ALERTA_SqlMap.listarTitulo",map);
		return (List)map.get("result");
	}
	
	public List<HashMap> listarTipoAlarmaAdicional() {
		HashMap parametros=new HashMap();
		getSqlMapClientTemplate().queryForList("BP_ALERTA_SqlMap.listarTipoAlarmaAdicional",parametros);
		return (List)parametros.get("result");
	}
	public void agregarAlertaAdicional(AlertaClienteAdicional oAlertaClienteAdicional) throws Exception{
		getSqlMapClientTemplate().insert("BP_ALERTA_SqlMap.agregarAlertaAdicional",oAlertaClienteAdicional);		
	}
	
	public void agregarAlertaTipoProducto(AlertaClienteTipoProducto oAlertaClienteTipoProducto) throws Exception{
		Map map = new LinkedHashMap();
		map.put("in_idusuarioasesor", oAlertaClienteTipoProducto.getIn_idusuarioasesor());
		map.put("in_codcliente",oAlertaClienteTipoProducto.getIn_codcliente());
		map.put("in_fechaalerta",oAlertaClienteTipoProducto.getIn_fechaalerta());
		map.put("in_idcategoriaporproducto",oAlertaClienteTipoProducto.getIn_idcategoriaporproducto());
		map.put("in_codcontrato",oAlertaClienteTipoProducto.getIn_codcontrato());
		map.put("in_isin",oAlertaClienteTipoProducto.getIn_isin());
		map.put("in_nemonico",oAlertaClienteTipoProducto.getIn_nemonico());
		map.put("in_idcodigotipoalarmar",oAlertaClienteTipoProducto.getIn_idcodigotipoalarmar());
		map.put("in_valoractual",oAlertaClienteTipoProducto.getIn_valoractual());
		map.put("in_valoralarma",oAlertaClienteTipoProducto.getIn_valoralarma());
		map.put("in_fecexpiracion",oAlertaClienteTipoProducto.getIn_fecexpiracion());
		map.put("in_codregmodi",oAlertaClienteTipoProducto.getIn_codregmodi());
		map.put("in_fecmodi",oAlertaClienteTipoProducto.getIn_fecmodi());
		
		System.out.println("sp: IIAF.piiaf_asesoria.sp_inser_as_alertaprod, param: "+map);
		getSqlMapClientTemplate().insert("BP_ALERTA_SqlMap.agregarAlertaTipoProducto",map);
	}
	
	@SuppressWarnings("unchecked")
	public List<Alertas> listarAgendaAlerta(Alertas alerta) {	
		HashMap map = new HashMap();
		map.put("in_idusuarioasesor", alerta.getIdusuarioasesor());
		map.put("in_idtipodocumento", alerta.getTipodocumento());
		map.put("in_valorbusqueda", alerta.getNrodocumento());
		map.put("in_fechadesde", alerta.getFechadesde());
		map.put("in_fechahasta", alerta.getFechahasta());
		map.put("in_codestado", alerta.getCodestado());
		map.put("in_idalerta", alerta.getIdalerta());
		map.put("IN_idtipoalerta", alerta.getTipo());
		getSqlMapClientTemplate().queryForList("BP_ALERTA_SqlMap.listarAgendaAlerta",map);
		return (List)map.get("result");
	}
	
	@SuppressWarnings("unchecked")
	public List<HashMap> actualizarEstadoAtendida(Alertas alerta){
		HashMap map = new HashMap();
		map.put("in_idusuarioasesor", alerta.getIdusuarioasesor());
		map.put("in_idalerta", alerta.getIdalerta());
		map.put("in_tipo", alerta.getTipo());
		getSqlMapClientTemplate().update("BP_ALERTA_SqlMap.actualizarEstadoAtendida",map);
		return (List)map.get("result");
	}
	
	public boolean editarAlertasCliente(String in_idalertaadicional, String in_codregmodi, String in_fecmodi) {
		HashMap map = new HashMap();
		map.put("in_idalertaadicional", in_idalertaadicional);
		map.put("in_codregmodi", in_codregmodi);
		map.put("in_fecmodi", in_fecmodi);
		try{
			getSqlMapClientTemplate().insert("BP_ALERTA_SqlMap.editarAlertasCliente",map);
			return true;
		}catch(Exception e){
			e.printStackTrace();
			return false;
		}		
	}
	public void editarAlertasClienteAdicional(String in_idalertaadicional, String in_idusuarioasesor, String in_codcliente, 
			String in_fechaevento, String in_idcodigotipoalarmar, String in_descripcionevento, String in_codregmodi, String in_fecmodi) throws Exception{
		HashMap map = new HashMap();
		map.put("in_idalertaadicional", in_idalertaadicional);
		map.put("in_idusuarioasesor", in_idusuarioasesor);
		map.put("in_codcliente", in_codcliente);
		map.put("in_fechaevento", in_fechaevento);
		map.put("in_idcodigotipoalarmar", in_idcodigotipoalarmar);
		map.put("in_descripcionevento", in_descripcionevento);
		map.put("in_codregmodi", in_codregmodi);
		map.put("in_fecmodi", in_fecmodi);
		
		getSqlMapClientTemplate().insert("BP_ALERTA_SqlMap.editarAlertasClienteAdicional",map);
	}
	public void editarAlertasClienteTipoProducto(AlertaClienteTipoProducto oAlertaclienteTipoProducto) throws Exception{
		HashMap map = new LinkedHashMap();
		map.put("in_idalerta", oAlertaclienteTipoProducto.getIn_idAlerta());
		map.put("in_idusuarioasesor", oAlertaclienteTipoProducto.getIn_idusuarioasesor());
		map.put("in_codcliente", oAlertaclienteTipoProducto.getIn_codcliente());
		map.put("in_fechaalerta", oAlertaclienteTipoProducto.getIn_fechaalerta());
		map.put("in_idcategoriaporproducto", oAlertaclienteTipoProducto.getIn_idcategoriaporproducto());
		map.put("in_codcontrato", oAlertaclienteTipoProducto.getIn_codcontrato());
		map.put("in_isin", oAlertaclienteTipoProducto.getIn_isin());
		map.put("in_nemonico", oAlertaclienteTipoProducto.getIn_nemonico());
		map.put("in_idcodigotipoalarmar", oAlertaclienteTipoProducto.getIn_idcodigotipoalarmar());
		map.put("in_valoractual", oAlertaclienteTipoProducto.getIn_valoractual());
		map.put("in_valoralarma", oAlertaclienteTipoProducto.getIn_valoralarma());
		map.put("in_fecexpiracion", oAlertaclienteTipoProducto.getIn_fecexpiracion());
		map.put("in_codregmodi", oAlertaclienteTipoProducto.getIn_codregmodi());
		map.put("in_fecmodi", oAlertaclienteTipoProducto.getIn_fecmodi());
		
		System.out.println("sp: IIAF.piiaf_asesoria.sp_actu_as_alertaprod, param: "+map);
		getSqlMapClientTemplate().insert("BP_ALERTA_SqlMap.editarAlertasClienteTipoProducto",map);
	}
}